package models

import (
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"time"
)

//用户表
type User struct {
	Id   int
	UserName string
	Passwd string
	Articles[] *Article `orm:"rel(m2m)"`  //m2m就是多对多的意思
}
//文章表
type Article struct {
	Id int //Id默认为主键，没有明确定义主键时，名称符合Id而且类型是int/int32/int64/uint/uint32/uint64类型时则为主键
	//Id2 int `orm:"pk;auto"` //这样就指定了Id2是主键同时自增
	//Title string `orm:"null"`  //orm默认非空，如果允许为空则这样设置
	Title string `orm:"size(20)"`  //指定长度
	Content string `orm:"size(500)"`
	Img string `orm:"size(50)"`
	Time time.Time `orm:"type(datetime);null"` // 还有其他类型`orm:"type(date)"`
	/**
	`orm:"auto_now_add;type(datetime)"` 第一个保存时才设置时间
	`orm:"auto_now;type(datetime)"`  每次model保存都会对时间自动更新
	 */
	Count int `orm:"default(0)"`
	ArticleType *ArticleType `orm:"rel(fk)"` //文章对应的类型,设置外键
	Users[] *User `orm:"reverse(many)"`
	/**
	扩展：
	`orm:"unipue"`  设置唯一
	`orm:"digits(12);decimals(4)"`  设置浮点数精度  共12位，四位是小数位
	 */
}

//类型表
type ArticleType struct {
	Id int
	TypeName string `orm:"size(20)"`
	Articles[] *Article `orm:"reverse(many)"`  //此处reverse和ArticleType的rel是一一对应的，此时many代表一对多：一个类型对应多篇文章
}



func init() {
	orm.RegisterDataBase("default", "mysql", "root:zengqiang789@tcp(127.0.0.1:3306)/test?charset=utf8")
	orm.RegisterModel(new(User),new(Article),new(ArticleType)) //注册多张表
	orm.RunSyncdb("default", false, true)
}
